home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / mac / developm / language / harvest.cpt / Harvest C / DSymbol.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-06-16  |  1.6 KB  |  80 lines

  1. /*
  2.     Harvest C
  3.     Copyright 1992 Eric W. Sink.  All rights reserved.
  4.     
  5.     This file is part of Harvest C.
  6.     
  7.     Harvest C is free software; you can redistribute it and/or modify
  8.     it under the terms of the GNU Generic Public License as published by
  9.     the Free Software Foundation; either version 2, or (at your option)
  10.     any later version.
  11.     
  12.     Harvest C is distributed in the hope that it will be useful,
  13.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.     GNU General Public License for more details.
  16.     
  17.     You should have received a copy of the GNU General Public License
  18.     along with Harvest C; see the file COPYING.  If not, write to
  19.     the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  20.     
  21.     Harvest C is not in any way a product of the Free Software Foundation.
  22.     Harvest C is not GNU software.
  23.     Harvest C is not public domain.
  24.  
  25.     This file may have other copyrights which are applicable as well.
  26.  
  27. */
  28.  
  29. /*
  30.     DSymbol.c
  31. */
  32.  
  33. #include "DSymbol.h"
  34.  
  35. void DSymbol::ISymbol(char *theName)
  36. {
  37.     if (theName) {
  38.         name = icemalloc(strlen(theName)+1);
  39.         strcpy(name,theName);
  40.     }
  41.     else {
  42.         name = NULL;
  43.     }
  44. }
  45.  
  46. void DSymbol::Dispose(void)
  47. {
  48.     if (name) {
  49.         icefree(name);
  50.     }
  51.     inherited::Dispose();
  52. }
  53.  
  54. Boolean DSymbol::NameIs(char *s)
  55. {
  56.     Boolean result;
  57.     if (strcmp(s,name)) {
  58.         return FALSE;
  59.     }
  60.     else {
  61.         return TRUE;
  62.     }
  63. }
  64.  
  65. unsigned long HashIt(char *name,unsigned long slots)
  66. {
  67.     int i;
  68.     unsigned long result = 0;
  69.     for (i=0;name[i];i++) {
  70.         result += name[i];
  71.     }
  72.     result = result % slots;
  73.     return result;
  74. }
  75.  
  76. unsigned long DSymbol::Hash(unsigned long slots)
  77. {
  78.     return HashIt(name,slots);
  79. }
  80.